package scala.examples.tcpoly.dimensions;

trait Dimensions {
trait Dimension
case class *[a <: Dimension, b <: Dimension](a: a, b: b) extends Dimension

trait Number[d <: Dimension]
trait Matrix[num[d <: Dimension] <: Number[d], d1 <: Dimension] {
  def *[d2 <: Dimension](that: Matrix[num, d2]): Matrix[num, *[d1, d2]]
}
}
